<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    // Promise承诺对象 
    // 容器 保存着将来才会执行的代码 比如异步操作
    // 避免了层层嵌套的回调函数
    // Promise构造函数
    // // 参数:回调函数(resolve,reject)
    // let p=new Promise(function(resolve,reject){
    //   resolve是成功的回调函数
    //   reject是失败的回调函数
    // });
    // Promise对象代表一个异步操作有三种状态:
    // pending(进行中),fulfilled(已成功),reject(已失败)
    // 最后返回resolved(已定性)结果
    // 创建一个承诺对象
    // function resolve(res){
    //   console.log(res);
    // }
    let p=new Promise((resolve,reject)=>{
      // resolve rejet是回调函数c
      // resolve函数是promise对象最终状态为成功状态 
      // reject函数是promise对象最终状态为失败状态
      // 非异步模仿异步请求
      if(3<2){
        // 假设异步操作执行成功 修改promise对象状态 为成功状态
        resolve('success');// pending --fulfilled
      }else{
        // 假设异步操作执行失败 修改promise对象状态 为失败状态
        reject('error');// pending --reject
      }
    });
    // 1.如何提供resolve和reject函数
    // 在promise原型对象中有then和catch方法
    // 1.then方法表示的是成功之后的回调 对应resolve
    // 2.catch方法表示的是失败之后的回调 对应reject
    // let result= p.then((res)=>{
    //   console.log(res,'成功回调');
    // });//返回值就是一个承诺对象
    // p.then(res=>{
    //   console.log(res,'成功回调');
    // }).catch(error=>{
    //   console.log(error,'失败回调');
    // }).finally(()=>{
    //   console.log('最终执行');
    // });
    // console.log(result,'promise承诺对象最终状态');
    // 2.如何提供resolve和reject函数
    p.then((res)=>{
      // resolve函数
      console.log(res,'成功回调');
    },(err)=>{
      //reject函数
      console.log(err,'失败回调');
    })
  </script>
</head>
<body>
  
</body>
</html>